#include "linkstack.h"

/*******************************************************************************
*函数名：
*函数功能：创建空的链栈
*函数参数：
*函数返回值：
*函数说明：
*******************************************************************************/
void creat_linkstack(pstack* S)
{
	*S = NULL;
}

/*******************************************************************************
*函数名：
*函数功能：入栈
*函数参数：
*函数返回值：
*函数说明：
*******************************************************************************/
void push(pstack* ptop,pstack pnew)
{
	pnew->next = *ptop;
	*ptop = pnew;
}

/*******************************************************************************
*函数名：
*函数功能：出栈
*函数参数：
*函数返回值：
*函数说明：
*******************************************************************************/
void pop(pstack* ptop,int* pdata)
{
	/*判断栈是否为空*/
	if(isempty_linkstack(*ptop))
	{
		printf("链栈为空，无法出栈\n");
		return;
	}
	
	/*出栈*/
	pstack pdel = *ptop;
	*pdata = pdel->data;
	*ptop = (*ptop)->next;
	free(pdel);
}

/*******************************************************************************
*函数名：
*函数功能：判断栈是否空
*函数参数：
*函数返回值：
*函数说明：
*******************************************************************************/
bool isempty_linkstack(pstack p)
{
	if (p == NULL)
		return true;
	else
		return false;
}

/*******************************************************************************
*函数名：
*函数功能：打印链栈
*函数参数：
*函数返回值：
*函数说明：
*******************************************************************************/
void print_linkstack(pstack top)
{
	pstack p;
	printf("--------------------------------------------\n");
	printf("栈顶");
	
	for(p = top; p != NULL; p = p->next)
		printf("->%d",p->data);
	
	printf("->栈底\n");
	printf("--------------------------------------------\n");	
}

/*******************************************************************************
*函数名：
*函数功能：
*函数参数：
*函数返回值：
*函数说明：
*******************************************************************************/